\chapter{Les besoins}
%\addcontentsline{toc}{chapter}{Besoins}

\section{Les besoins fonctionnels}

\subsection{Lancement de l'application}
\paragraph{}
L'utilisateur devra avoir la possibilité de charger deux fichiers depuis son disque dur afin de pouvoir lancer l'analyse : 
\begin{itemize}
	\item un fichier \textit{.out} généré par \textbf{METATOOL} et contenant la matrice de modes élémentaires,
	\item ainsi que le fichier \textit{.dat} contenant l'ensemble des réactions du réseau métabolique étudié et ayant permis d'obtenir le fichier \textit{.out}
\end{itemize}

\paragraph{}
L'utilisateur aura aussi deux paramètres nécessaires à \textbf{ACoM} à entrer : 
\begin{itemize}
	\item sigma qui correspond à la taille minimale des motifs à rechercher.
	\item epsilon qui correspond au seuil de similarité à appliquer lors de la comparaison des modes élémentaires. 
\end{itemize}

Pour chacun de ces paramètres, il devra avoir le choix d'entrer une valeur ou bien une plage de valeurs. 
Dans le second cas, il devra donc pouvoir effectuer la comparaison entre les divers résultats obtenus afin d'étudier l'influence des ces paramètres. 

\paragraph{}
De plus, l'utilisateur devra pouvoir sélectionner, s'il le souhaite, une sous matrice de modes élémentaires à partir de la matrice générée par \textbf{METATOOL}. 
Ceci implique donc un affichage de cette matrice. 


\subsection{Résultats à présenter}

\subsubsection{Résultats statistiques globaux}
Le nombre total de classes, leur effectif moyen, ainsi que la somme de leurs effectifs devront être affichés. 
Concernant les motifs, le nombre de différentes tailles ainsi que leur taille moyenne seront donnés. 

\subsubsection{Résultats par taille de motif}
Pour chacune des tailles de motif, le nombre de classes et les classes correspondantes devront faire partie des résultats ainsi que leur effectif total. 

\subsubsection{Résultats par mode élémentaire}
Le nombre de répétitions de chaque mode élémentaire devra être donné, ainsi que toutes les classes où il appara\^it. 

\subsubsection{Affichage des motifs}
L'ensemble des motifs obtenus lors de l'analyse sera représentée par un graphe \textit{.svg} dont les noeuds correspondront aux différentes réactions métaboliques, ceci afin de pouvoir visualiser les classes ayant des points communs. 
La réversibilité ou l'irréversibilité de chaque réaction devra être représentée, tout comme leur orientation. 
Des liens affichant les classes correspondantes devront aussi être présents sur le graphe, au niveau des motifs. 

\subsubsection{Bilans}
L'utilisateur devra pouvoir obtenir le nombre de modes élémentaires ayant exactement le même bilan réactionnel (c'est à dire les mêmes réactifs, produits et coefficients stoechiométriques) et accéder à ces modes élémentaires. 
De plus, il devra avoir la possibilité de choisir un métabolite, afin de rechercher tous les modes ayant cette molécule en entrée et/ou en sortie. 

\subsubsection{Comparaison de résultats}
Lorsque l'utilisateur entrera une plage de valeurs pour l'un ou les deux paramètres, il devra pouvoir effectuer une comparaison de ses résultats grâce à l'affichage de la variation du nombre de classes ainsi que celui de la variation de la somme des effectifs des classes qui témoignent de la variation des résultats globaux. 


\subsection{Sauvegarde/Téléchargement des résultats obtenus}

\paragraph{}
Pour chacune des analyses, \textbf{ACoM} génère différents types de fichiers :
\begin{itemize}
	\item un fichier \textit{motif.txt} contenant l'ensemble des motifs des classes,
	\item un fichier de bruit,
 	\item ainsi qu'un autre fichier pour chaque classe.
\end{itemize}

\paragraph{}
Tous ces fichiers devront être sauvegardés à l'intérieur d'un dossier créé de manière automatique et dont le nom comportera les éléments suivants afin de l'identifier de manière unique : 
\begin{itemize}
	\item la date de lancement de l'analyse, 
	\item le nom du fichier \textit{.dat} d'entrée, 
 	\item les valeurs des paramètres sigma et epsilon. 
\end{itemize}

Les résultats statistiques présentés devront eux être sauvegardés sous forme d'un fichier \textit{.csv} ajouté à ce dossier.

\paragraph{}
A la fin de l'analyse, l'utilisateur devra avoir la possibilité de récupérer ou non l'ensemble des résultats obtenus afin de les sauvegarder sur son propre disque dur. 
Le fichier à récupérer correspondra donc au dossier complet qui aura été au préalable compressé. 



\section{Les besoins non-fonctionnels}

\subsection{Plateforme cible}
La plateforme cible de l'interface sera un serveur (Apache/2.2.8) dont les caractéristiques sont les suivantes :
\begin{itemize}
	\item Processeur : AMD Athlon(tm) 64 Processor 3500+,
	\item Mémoire : 2Go. 
\end{itemize}

\subsection{Portabilité}
Notre programme étant orienté vers une interface web, nous le testerons pour au moins trois navigateurs WEB à savoir \textbf{Firefox}, \textbf{Opera} et \textbf{Safari}. 
Tous nos tests seront ainsi basés sur deux jeux de données : 
\begin{itemize}
	\item l'un avec un petit nombre de modes élémentaires (une cinquantaine) correspondant au métabolisme du cycle de Krebs, pour avoir une exécution rapide afin de vérifier le bon fonctionnement du programme,
	\item et l'autre avec un grand nombre de modes élémentaires (environ trente milles) correspondant au métabolisme carboné de la tomate, pour optimiser l'affichage d'ensembles de données de grande taille.
\end{itemize}

\subsection{Extensibilité et modularité}
Le programme sera séparé en plusieurs modules afin d'une part, de pouvoir embarquer \textbf{METATOOL} dans une version future, et d'autre part, de pouvoir ajouter d'autres analyses dont le besoin ne s'est pas encore fait ressentir. 

\subsection{Robustesse}
Il est à envisager que l'utilisateur fournisse des données d'entrée erronées, en conséquence, un traitement des ces erreurs devra \^etre mis en place.

D'autre part, si l'exécution venait à rencontrer un problème qui empêcherait l'utilisateur d'obtenir ses résultats, alors l'utilisateur devrait être renseigné sur le niveau où a eu lieu l'erreur (par exemple lors de l'exécution même d'\textbf{ACoM}, ou bien lors de l'analyse de ses résultats) puis serait redirigé vers la page d'accueil du programme.

De plus, le programme \textbf{ACoM} est déjà capable de renvoyer un message d'erreur lors de son utilisation en ligne de commande. 
Il faudra donc récupérer ce message dans le cas d'une erreur impliquant \textbf{ACoM}, afin de l'afficher à l'utilisateur.

\subsection{Performances}
Les performances d'exécution d'\textbf{ACoM} ainsi que celles d'archivage des résultats sont directement liées à l'architecture du serveur. 
En revanche, l'affichage des pages dépend du client, ainsi différents tests seront nécessaires afin de veiller à garder un temps de chargement moyen inférieur à trois secondes.

